package com.itheima.test2;

import java.util.Scanner;

public class StringDemo4 {
    public static void main(String[] args) {
        // 金额转换 如：2135===>零佰零拾零万贰仟壹佰叁拾伍元

        // 1.键盘录入一个整数，并校验0 ~ 9999999
        Scanner scanner = new Scanner(System.in);

        int money;

        while (true) {
            System.out.println("请输入金额:");
            money = scanner.nextInt();
            if (money >= 0) {
                break;
            } else {
                System.out.println("无效金额,请重新输入");
            }
        }

        // System.out.println(money);
        // 2.遍历金额
        String moneyStr = "";
        while (true) {
            int ge = money % 10; // 获取个位上的数字 如：123 % 10 = 3
            money = money / 10; //获取完个位上的数之后，除以十 去掉个位上的数  如：123 / 10 = 12
            // 获取每一个大写数字
            // System.out.println(getCapitalNumber(ge));
            // 这里需要从右到左拼接，先拼接空字符，再拼接值
            moneyStr = getCapitalNumber(ge) + moneyStr;
            // 第一次  "伍" + "" = "伍"
            // 第二次  "叁" + "伍" = "叁伍"
            //...
            if (money == 0) {
                break;
            }

        }

        // 3.得到大写的金额,不满7位，做补零。 如：贰壹叁伍
        int count = 7 - moneyStr.length();

        for (int i = 0; i < count; i++) {
            moneyStr = "零" + moneyStr;
        }
        // 补0结果  零零零贰壹叁伍

        // 4.插入单位 零佰零拾零万贰仟壹佰叁拾伍元

        String[] units = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        String result = "";
        for (int i = 0; i < moneyStr.length(); i++) {
            char c = moneyStr.charAt(i);
            // 插入单位
            result = result + c + units[i];
        }

        System.out.println(result);//打印结果：零佰零拾零万贰仟壹佰叁拾伍元

    }

    // 获取整数的每一位数字对应的大写的值
    public static String getCapitalNumber(int number) {
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾"};
        return arr[number];
    }

}
